package com.dm.dao;

import com.dm.dto.FileAttributeDto;
import com.dm.dto.FilesDto;
import com.dm.dto.input.FileDto;
import com.dm.dto.input.FileSearchDto;
import com.dm.dto.input.UserDto;
import com.dm.entity.File;

import java.util.List;

/**
 * @author hqw521@qq.com
 * @date 2018/11/16 13:22
 */
public interface FileDao {
    /**
     * 向数据库中新增文件
     *
     * @param fileDto
     * @return
     */
    Integer insertFile(FileDto fileDto);

    /**
     * 查询用户上传的文件
     *
     * @param userDto
     * @return
     */
    List<File> findFiles(UserDto userDto);

    /**
     * 查询用户某一文件夹下的文件
     *
     * @param userId   用户ID
     * @param folderId 文件夹ID
     * @return 文件信息
     */
    List<FilesDto> findFilesByFolder(Integer userId, Integer folderId);

    /**
     * 文件重命名
     *
     * @param fileName 文件名
     * @param fileId   文件ID
     * @return
     */
    Integer fileRename(String fileName, Integer fileId);

    /**
     * 批量删除文件
     *
     * @param ids
     * @return
     */
    Integer deleteFiles(Integer[] ids);

    /**
     * 查询文件名
     *
     * @param ids
     * @return 文件名
     */
    List<String> findFileName(Integer[] ids);

    /**
     * 按条件查询文件
     *
     * @param fileSearchDto
     * @return
     */
    List<FilesDto> fileSearch(FileSearchDto fileSearchDto);

    /**
     * 获取文件属性
     *
     * @param fileId 文件ID
     * @return 文件属性值
     */
    FileAttributeDto findFileAttribute(Integer fileId);

    /**
     * 更新文件点击次数
     *
     * @param fileId 文件ID
     */
    void updateClickNum(Integer fileId);

    /**
     * 查询文件名和地址
     *
     * @param ids 文件ID数组
     * @return // 文件名和文件相对地址
     */
    List<FileDto> findFileNameAndPath(Integer[] ids);
}
